/**
 * 
 */
package br.com.skynix.tcmc.model.venda;

import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.annotations.ForeignKey;

import br.com.skynix.tcmc.base.model.EntidadeAuditavel;
import br.com.skynix.tcmc.model.conta.Conta;
import br.com.skynix.tcmc.model.rh.Empresa;
import br.com.skynix.tcmc.model.rh.Funcionario;

/**
 * @author davi
 * 
 */
@Entity
@Table(name = "tb_pedido")
public class Pedido extends EntidadeAuditavel {
	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_funcionario_suporte_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK001_pedido")
	private Funcionario suporte;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_funcionario_supervisor_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK002_pedido")
	private Funcionario supervisor;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_funcionario_consultor_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK003_pedido")
	private Funcionario consultor;

	@Size(max = 50)
	@Column(name = "numero_radar", nullable = true, length = 50)
	private String numeroRadar;

	@Size(max = 50)
	@Column(name = "numero_p2b", nullable = true, length = 50)
	private String numeroP2b;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_conta_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK004_pedido")
	private Conta conta;

	@Column(name = "data_entrada", nullable = true)
	private Timestamp dataEntrada;

	@Column(name = "data_input", nullable = true)
	private Timestamp dataInput;

	@Column(name = "data_finalizacao")
	private Timestamp dataFinalizacao;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_status_venda", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK005_pedido")
	private StatusVenda statusVenda;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_empresa_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK006_pedido")
	private Empresa empresa;

	@Column(nullable = true, columnDefinition = "TEXT DEFAULT NULL")
	private String observacao;

	/**
	 * @return the suporte
	 */
	public Funcionario getSuporte() {
		return suporte;
	}

	/**
	 * @param suporte the suporte to set
	 */
	public void setSuporte(Funcionario suporte) {
		this.suporte = suporte;
	}

	/**
	 * @return the supervisor
	 */
	public Funcionario getSupervisor() {
		return supervisor;
	}

	/**
	 * @param supervisor the supervisor to set
	 */
	public void setSupervisor(Funcionario supervisor) {
		this.supervisor = supervisor;
	}

	/**
	 * @return the consultor
	 */
	public Funcionario getConsultor() {
		return consultor;
	}

	/**
	 * @param consultor the consultor to set
	 */
	public void setConsultor(Funcionario consultor) {
		this.consultor = consultor;
	}

	/**
	 * @return the numeroRadar
	 */
	public String getNumeroRadar() {
		return numeroRadar;
	}

	/**
	 * @param numeroRadar the numeroRadar to set
	 */
	public void setNumeroRadar(String numeroRadar) {
		this.numeroRadar = numeroRadar;
	}

	/**
	 * @return the numeroP2b
	 */
	public String getNumeroP2b() {
		return numeroP2b;
	}

	/**
	 * @param numeroP2b the numeroP2b to set
	 */
	public void setNumeroP2b(String numeroP2b) {
		this.numeroP2b = numeroP2b;
	}

	/**
	 * @return the conta
	 */
	public Conta getConta() {
		return conta;
	}

	/**
	 * @param conta the conta to set
	 */
	public void setConta(Conta conta) {
		this.conta = conta;
	}

	/**
	 * @return the dataEntrada
	 */
	public Timestamp getDataEntrada() {
		return dataEntrada;
	}

	/**
	 * @param dataEntrada the dataEntrada to set
	 */
	public void setDataEntrada(Timestamp dataEntrada) {
		this.dataEntrada = dataEntrada;
	}

	/**
	 * @return the dataInput
	 */
	public Timestamp getDataInput() {
		return dataInput;
	}

	/**
	 * @param dataInput the dataInput to set
	 */
	public void setDataInput(Timestamp dataInput) {
		this.dataInput = dataInput;
	}

	/**
	 * @return the dataFinalizacao
	 */
	public Timestamp getDataFinalizacao() {
		return dataFinalizacao;
	}

	/**
	 * @param dataFinalizacao the dataFinalizacao to set
	 */
	public void setDataFinalizacao(Timestamp dataFinalizacao) {
		this.dataFinalizacao = dataFinalizacao;
	}

	/**
	 * @return the statusVenda
	 */
	public StatusVenda getStatusVenda() {
		return statusVenda;
	}

	/**
	 * @param statusVenda the statusVenda to set
	 */
	public void setStatusVenda(StatusVenda statusVenda) {
		this.statusVenda = statusVenda;
	}

	/**
	 * @return the empresa
	 */
	public Empresa getEmpresa() {
		return empresa;
	}

	/**
	 * @param empresa the empresa to set
	 */
	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	/**
	 * @return the observacao
	 */
	public String getObservacao() {
		return observacao;
	}

	/**
	 * @param observacao the observacao to set
	 */
	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}
}
